# 使用 Node.js 16 作为基础镜像
# 微信云托管 - Node.js 应用 Dockerfile
# 此 Dockerfile 专为微信云托管环境优化

# 使用官方 Node.js 16 轻量镜像作为基础镜像
FROM node:16-alpine

# 安装 tini 作为 init 进程，解决信号处理问题
RUN apk add --no-cache tini

# 创建并设置工作目录
WORKDIR /app

# 复制 package.json 和 package-lock.json（优先复制以利用 Docker 缓存）
COPY package.json package-lock.json ./

# 安装项目依赖（使用淘宝镜像加速，仅安装生产依赖）
RUN npm install --production --registry=https://registry.npm.taobao.org

# 复制项目源代码到工作目录
COPY . .

# 设置环境变量
ENV NODE_ENV=production

# 声明容器监听的端口（微信云托管要求使用80端口）
EXPOSE 80

# 使用 tini 作为 init 进程，确保正确处理信号
ENTRYPOINT ["/sbin/tini", "--"]

# 启动应用程序
CMD ["node", "app.js"]